package com.qire.manhua.dal;

import com.qire.antsbinder.dal.DataWarehouse.MethodType;
import com.qire.antsbinder.dal.annotation.DataAccess;
import com.qire.antsbinder.dal.annotation.ParamsAlias;
import com.qire.common.constant.Url;
import com.qire.manhua.model.vo.InviteFriendsDataVO;
import com.qire.manhua.model.vo.OkResponseVO;
import com.qire.manhua.model.vo.SignInResponseVO;
import com.qire.manhua.model.vo.SignInInfoVO;
import com.qire.manhua.model.vo.TaskListDataVO;
import com.qire.manhua.model.vo.TaskStateResponseVO;

/**
 * 任务数据
 */
public interface ITaskDataDAL {

    /**
     * 获取任务列表信息
     * @return
     */
    @DataAccess(url = Url.TaskList, methodType = MethodType.GET)
    TaskListDataVO fetchTaskList();

    /**
     * 获取签到信息
     * @return
     */
    @DataAccess(url = Url.sign_info, methodType = MethodType.GET)
    SignInInfoVO fetchSignInInfo();

    /**
     * 签到
     * @return
     */
    @DataAccess(url = Url.SignIn)
    SignInResponseVO signIn();

    /**
     * 签到双倍奖励领取
     * @param signInDoubleKey 领取奖励的key，由 {@link #signIn()} 接口返回
     * @return
     */
    @DataAccess(url = Url.SignInRewardDouble)
    SignInResponseVO signInRewardDouble(@ParamsAlias(name = "sign_dbl") String signInDoubleKey);

    /**
     * 获取邀请好友的分享信息。
     * @return
     */
    @DataAccess(url = Url.invite_friends, methodType = MethodType.GET)
    InviteFriendsDataVO fetchInviteFriendsInfo();

    /**
     * 任务奖励领取
     * @param taskId 任务id
     * @return
     */
    @DataAccess(url = Url.v5_receiveAward)
    OkResponseVO receiveAward(@ParamsAlias(name = "task_id") int taskId);

    /**
     * 分享漫画任务上报
     * @return
     */
    @DataAccess(url = Url.ShareComicTaskReport)
    TaskStateResponseVO shareComicTaskReport();
}
